import logging
import os.path
import sys
from gensim.corpora import WikiCorpus
import time
# 开始时间
begin = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
 
if __name__ == '__main__':
    # Sys.argv[]其实就是一个列表，里边的项为用户输入的参数，从程序外部获取参数，
    # 其第一个元素是程序本身，随后才依次是外部给予的参数
    #　os.path.basename返回文件名
    program = os.path.basename(sys.argv[0])
    # 返回具有指定 name 的日志记录器, 如果指定了 name，它通常是以点号分隔的带层级结构的名称
    logger = logging.getLogger(program)
    # logging.basicConfig用于指定“要记录的日志级别”、“日志格式”、“日志输出位置”、“日志文件的打开模式”等信息，
    # format指定日志格式字符串，即指定日志输出时所包含的字段信息以及它们的顺序
    # asctime：日志事件发生的时间
    # levelname：该日志记录的文字形式的日志级别（'DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'）
    # message：日志记录的文本内容
    logging.basicConfig(format='%(asctime)s:%(levelname)s:%(message)s')
    # 设置日志的记录严重级别为INFO
    logging.root.setLevel(level=logging.INFO)
    # 创建一条严重级别为INFO的日志记录
    logger.info("running %s"% ' '.join(sys.argv))
 
    # 输入路径与输出路径
    inp,outp = "enwiki-latest-pages-articles14.xml-p7697595p7744800.bz2","wiki_data.txt"
    space = ' '
    i = 0
    output = open(outp,'w',encoding='utf-8')
    # 从维基百科(或其他基于mediawiki的)数据库转储构建语料库。在内部使用多处理来并行化工作并更快地处理转储
    wiki = WikiCorpus(inp,lemmatize=False,dictionary={ })
    for text in wiki.get_texts():
        s = space.join(text)+"\n"
        output.write(s)
        i = i+1
        if(i% 10000 == 0):
            logger.info("Saved "+str(i) + " articles")
    output.close()
    logger.info("Finished Saved "+ str(i) +" articles")
 
    end = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
    print("begin",begin)
    print("end  ",end)
